/*
 * nodo.h
 *
 *  Created on: 24/03/2013
 *      Author: dario
 */

#ifndef NODO_H_
#define NODO_H_
#include <malloc.h>

/*Un nodo es una estructura que guarda un elemento y un puntero al siguiente nodo*/
typedef struct Nodo Nodo;
struct Nodo {
	/*El dato que almacena el nodo*/
	void* dato;
	/*El siguiente nodo*/
	Nodo* enlazado;
	/*Puntero a la funcion para destruir el dato almacenado, esta puede ser NULL
	 *si no es necesario destruir los datos.
	 */
	void (*DestructorDelDato)(void* a);
};

Nodo* ConstruirNodo(void* element, Nodo* siguiente, void (*funcion)(void* a));
void DestruirNodo(Nodo* ptr);
void SetDatoNodo(Nodo* ptr, void* e);
void* GetElementoNodo(Nodo* ptr);
void SetNodoEnlazado(Nodo* ptr, Nodo* enlace);
Nodo* GetNodoEnlazado(Nodo* ptr);

#endif /* NODO_H_ */
